home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / PCIPlugin.a < prev    next >
Encoding:
Text File  |  1996-05-01  |  11.0 KB  |  333 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        PCIPlugin.a
  3. ;
  4. ;    Contains:    This file contains all interface related structures and prototypes for pci expert to plugin
  5. ;
  6. ;    Version:    Technology:    Copland
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__PCIPLUGIN__') = 'UNDEFINED' THEN
  19. __PCIPLUGIN__ SET 1
  20.  
  21.     IF &TYPE('__PCICOMMONPLUGIN__') = 'UNDEFINED' THEN
  22.     include 'PCICommonPlugin.a'
  23.     ENDIF
  24.     IF FOR_SYSTEM8_PREEMPTIVE THEN
  25. ;  subordinate pci device tree 'reg' property structure definition
  26. PCIRegProperty            RECORD 0
  27. physicalHigh             ds.l    1                ; offset: $0 (0)
  28. physicalMiddle             ds.l    1                ; offset: $4 (4)
  29. physicalLow                 ds.l    1                ; offset: $8 (8)
  30. propAddress                 ds.l    1                ; offset: $C (12)
  31. propLength                 ds.l    1                ; offset: $10 (16)
  32. sizeof                     EQU *                    ; size:   $14 (20)
  33.                         ENDR
  34. ; typedef struct PCIRegProperty *        PCIRegPropertyPtr
  35.  
  36. ;  pci device tree 'bus-range' property structure definition
  37. PCIBusRangeProperty        RECORD 0
  38. lowBus                     ds.l    1                ; offset: $0 (0)
  39. highBus                     ds.l    1                ; offset: $4 (4)
  40. sizeof                     EQU *                    ; size:   $8 (8)
  41.                         ENDR
  42. ; typedef struct PCIBusRangeProperty *    PCIBusRangePropertyPtr
  43.  
  44. ;  subordinate pci device description table entry header structure definition
  45. ; typedef LogicalAddress                 ConfigAddress
  46.  
  47. ; typedef LogicalAddress                 IOAddress
  48.  
  49. PCIDeviceTableEntryHeader RECORD 0
  50. entry                     ds        RegEntryRef        ; offset: $0 (0)
  51. name                     ds.b    32                ; offset: $10 (16)
  52. pciDomain                 ds.l    1                ; offset: $30 (48)
  53. pciBusNumber             ds.l    1                ; offset: $34 (52)
  54. pciSecondBusNumber         ds.l    1                ; offset: $38 (56)
  55. accessType                 ds.l    1                ; offset: $3C (60)
  56. regProperty                 ds.l    1                ; offset: $40 (64)
  57. regPropertyCount         ds.l    1                ; offset: $44 (68)
  58. ioBase                     ds.l    1                ; offset: $48 (72)
  59. rangeBase                 ds.l    1                ; offset: $4C (76)
  60. sizeof                     EQU *                    ; size:   $50 (80)
  61.                         ENDR
  62. ; typedef struct PCIDeviceTableEntryHeader * PCIDeviceTableEntryHeaderPtr
  63.  
  64. ;  subordinate pci device description table entry structure definition
  65. PCIDeviceTableEntry        RECORD 0
  66. nextDeviceEntry             ds.l    1                ; offset: $0 (0)
  67. header                     ds        PCIDeviceTableEntryHeader ; offset: $4 (4)
  68. BridgePlugin             ds.l    1                ; offset: $54 (84)
  69. pluginSpecificStuff         ds.l    16                ; offset: $58 (88)
  70. sizeof                     EQU *                    ; size:   $98 (152)
  71.                         ENDR
  72. ; typedef struct PCIDeviceTableEntry *    PCIDeviceTableEntryPtr
  73.  
  74. ;  type defs for plugin interfaces
  75. ;  pci domain descriptor definition
  76. PCIControlDescriptor    RECORD 0
  77. InterfaceHeader             ds        PCIPluginHeader ; offset: $0 (0)
  78. PCIDeviceDescriptor         ds        PCIDeviceTableEntry ; offset: $14 (20)
  79. TheDomainDriverDescription  ds.l 1                ; offset: $AC (172)
  80. InitializeFunc             ds.l    1                ; offset: $B0 (176)
  81. ConfigReadByteFunc         ds.l    1                ; offset: $B4 (180)
  82. ConfigReadWordFunc         ds.l    1                ; offset: $B8 (184)
  83. ConfigReadLongFunc         ds.l    1                ; offset: $BC (188)
  84. ConfigWriteByteFunc         ds.l    1                ; offset: $C0 (192)
  85. ConfigWriteWordFunc         ds.l    1                ; offset: $C4 (196)
  86. ConfigWriteLongFunc         ds.l    1                ; offset: $C8 (200)
  87. IOReadByteFunc             ds.l    1                ; offset: $CC (204)
  88. IOReadWordFunc             ds.l    1                ; offset: $D0 (208)
  89. IOReadLongFunc             ds.l    1                ; offset: $D4 (212)
  90. IOWriteByteFunc             ds.l    1                ; offset: $D8 (216)
  91. IOWriteWordFunc             ds.l    1                ; offset: $DC (220)
  92. IOWriteLongFunc             ds.l    1                ; offset: $E0 (224)
  93. IntAckReadByteFunc         ds.l    1                ; offset: $E4 (228)
  94. IntAckReadWordFunc         ds.l    1                ; offset: $E8 (232)
  95. IntAckReadLongFunc         ds.l    1                ; offset: $EC (236)
  96. SpecialCycleWriteLongFunc  ds.l    1                ; offset: $F0 (240)
  97. InitDeviceEntryFunc         ds.l    1                ; offset: $F4 (244)
  98. GetIOBaseFunc             ds.l    1                ; offset: $F8 (248)
  99. FinalizeFunc             ds.l    1                ; offset: $FC (252)
  100. sizeof                     EQU *                    ; size:   $100 (256)
  101.                         ENDR
  102. ; typedef struct PCIControlDescriptor *    PCIControlDescriptorPtr
  103.  
  104. ;  Prototypes for the PIM
  105. ;
  106. ; extern OSStatus PCIPluginInitialize(void)
  107. ;
  108.     IF GENERATINGCFM THEN
  109.         IMPORT_CFM_FUNCTION PCIPluginInitialize
  110.     ENDIF
  111.  
  112. ;
  113. ; extern OSStatus PCIPluginConfigReadByte(ConfigAddress configAddr, UInt8 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  114. ;
  115.     IF GENERATINGCFM THEN
  116.         IMPORT_CFM_FUNCTION PCIPluginConfigReadByte
  117.     ENDIF
  118.  
  119. ;
  120. ; extern OSStatus PCIPluginConfigReadWord(ConfigAddress configAddr, UInt16 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  121. ;
  122.     IF GENERATINGCFM THEN
  123.         IMPORT_CFM_FUNCTION PCIPluginConfigReadWord
  124.     ENDIF
  125.  
  126. ;
  127. ; extern OSStatus PCIPluginConfigReadLong(ConfigAddress configAddr, UInt32 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  128. ;
  129.     IF GENERATINGCFM THEN
  130.         IMPORT_CFM_FUNCTION PCIPluginConfigReadLong
  131.     ENDIF
  132.  
  133. ;
  134. ; extern OSStatus PCIPluginConfigWriteByte(ConfigAddress configAddr, UInt8 value, PCIDeviceTableEntryPtr pciDeviceEntry)
  135. ;
  136.     IF GENERATINGCFM THEN
  137.         IMPORT_CFM_FUNCTION PCIPluginConfigWriteByte
  138.     ENDIF
  139.  
  140. ;
  141. ; extern OSStatus PCIPluginConfigWriteWord(ConfigAddress configAddr, UInt16 value, PCIDeviceTableEntryPtr pciDeviceEntry)
  142. ;
  143.     IF GENERATINGCFM THEN
  144.         IMPORT_CFM_FUNCTION PCIPluginConfigWriteWord
  145.     ENDIF
  146.  
  147. ;
  148. ; extern OSStatus PCIPluginConfigWriteLong(ConfigAddress configAddr, UInt32 value, PCIDeviceTableEntryPtr pciDeviceEntry)
  149. ;
  150.     IF GENERATINGCFM THEN
  151.         IMPORT_CFM_FUNCTION PCIPluginConfigWriteLong
  152.     ENDIF
  153.  
  154. ;
  155. ; extern OSStatus PCIPluginIOReadByte(IOAddress ioAddr, UInt8 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  156. ;
  157.     IF GENERATINGCFM THEN
  158.         IMPORT_CFM_FUNCTION PCIPluginIOReadByte
  159.     ENDIF
  160.  
  161. ;
  162. ; extern OSStatus PCIPluginIOReadWord(IOAddress ioAddr, UInt16 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  163. ;
  164.     IF GENERATINGCFM THEN
  165.         IMPORT_CFM_FUNCTION PCIPluginIOReadWord
  166.     ENDIF
  167.  
  168. ;
  169. ; extern OSStatus PCIPluginIOReadLong(IOAddress ioAddr, UInt32 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  170. ;
  171.     IF GENERATINGCFM THEN
  172.         IMPORT_CFM_FUNCTION PCIPluginIOReadLong
  173.     ENDIF
  174.  
  175. ;
  176. ; extern OSStatus PCIPluginIOWriteByte(IOAddress ioAddr, UInt8 value, PCIDeviceTableEntryPtr pciDeviceEntry)
  177. ;
  178.     IF GENERATINGCFM THEN
  179.         IMPORT_CFM_FUNCTION PCIPluginIOWriteByte
  180.     ENDIF
  181.  
  182. ;
  183. ; extern OSStatus PCIPluginIOWriteWord(IOAddress ioAddr, UInt16 value, PCIDeviceTableEntryPtr pciDeviceEntry)
  184. ;
  185.     IF GENERATINGCFM THEN
  186.         IMPORT_CFM_FUNCTION PCIPluginIOWriteWord
  187.     ENDIF
  188.  
  189. ;
  190. ; extern OSStatus PCIPluginIOWriteLong(IOAddress ioAddr, UInt32 value, PCIDeviceTableEntryPtr pciDeviceEntry)
  191. ;
  192.     IF GENERATINGCFM THEN
  193.         IMPORT_CFM_FUNCTION PCIPluginIOWriteLong
  194.     ENDIF
  195.  
  196. ;
  197. ; extern OSStatus PCIPluginIntAckReadByte(UInt8 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  198. ;
  199.     IF GENERATINGCFM THEN
  200.         IMPORT_CFM_FUNCTION PCIPluginIntAckReadByte
  201.     ENDIF
  202.  
  203. ;
  204. ; extern OSStatus PCIPluginIntAckReadWord(UInt16 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  205. ;
  206.     IF GENERATINGCFM THEN
  207.         IMPORT_CFM_FUNCTION PCIPluginIntAckReadWord
  208.     ENDIF
  209.  
  210. ;
  211. ; extern OSStatus PCIPluginIntAckReadLong(UInt32 *valuePtr, PCIDeviceTableEntryPtr pciDeviceEntry)
  212. ;
  213.     IF GENERATINGCFM THEN
  214.         IMPORT_CFM_FUNCTION PCIPluginIntAckReadLong
  215.     ENDIF
  216.  
  217. ;
  218. ; extern OSStatus PCIPluginSpecialCycleWriteLong(UInt32 value, PCIDeviceTableEntryPtr pciDeviceEntry)
  219. ;
  220.     IF GENERATINGCFM THEN
  221.         IMPORT_CFM_FUNCTION PCIPluginSpecialCycleWriteLong
  222.     ENDIF
  223.  
  224. ;
  225. ; extern OSStatus PCIPluginInitDeviceEntry(PCIDeviceTableEntryPtr deviceDescriptor)
  226. ;
  227.     IF GENERATINGCFM THEN
  228.         IMPORT_CFM_FUNCTION PCIPluginInitDeviceEntry
  229.     ENDIF
  230.  
  231. ;
  232. ; extern OSStatus PCIPluginGetIOBase(PCIDeviceTableEntryPtr deviceDescriptor, IOAddress *ioBase)
  233. ;
  234.     IF GENERATINGCFM THEN
  235.         IMPORT_CFM_FUNCTION PCIPluginGetIOBase
  236.     ENDIF
  237.  
  238. ;
  239. ; extern OSStatus PCIPluginFinalize(void)
  240. ;
  241.     IF GENERATINGCFM THEN
  242.         IMPORT_CFM_FUNCTION PCIPluginFinalize
  243.     ENDIF
  244.  
  245. ;  general purpose pci masks
  246.  
  247. kPCIconfigAddrReservedValue        EQU        $00000000
  248. kPCIconfigAddrReservedMask        EQU        $FF000000
  249. kPCIconfigAddrBusNumberMask        EQU        $00FF0000
  250. kPCIconfigAddrDeviceNumberMask    EQU        $0000F800
  251. kPCIconfigAddrFunctionNumberMask EQU    $00000700
  252. kPCIconfigAddrRegisterNumberMask EQU    $000000FC
  253. kPCIconfigAddrAccessTypeMask    EQU        $00000001
  254. kPCIregisterByteMask            EQU        $00000003
  255. kPCIregisterNotByteMask            EQU        $FFFFFFFC
  256. kPCIregisterWordMask            EQU        $00000002
  257. ;  pci encoded-int structure constants definition
  258.  
  259. kPCIPhysicalHighRelocatableMask    EQU        $80000000
  260. kPCIPhysicalHighRelocatable        EQU        $80000000
  261. kPCIPhysicalHighPrefetchableMask EQU    $40000000
  262. kPCIPhysicalHighPrefetchable    EQU        $40000000
  263. kPCIPhysicalHighAliasedMask        EQU        $20000000
  264. kPCIPhysicalHighAliased            EQU        $20000000
  265. kPCIPhysicalHighSpaceCodeMask    EQU        $03000000
  266. kPCIPhysicalHighSpaceCodeConfig    EQU        $00000000
  267. kPCIPhysicalHighSpaceCodeIO        EQU        $01000000
  268. kPCIPhysicalHighSpaceCodeMemory    EQU        $02000000
  269. kPCIPhysicalHighSpaceCode64Bit    EQU        $03000000
  270. kPCIPhysicalHighBusMask            EQU        $00FF0000
  271. kPCIPhysicalHighDeviceMask        EQU        $0000F800
  272. kPCIPhysicalHighDevice0            EQU        $00000000
  273. kPCIPhysicalHighDevice1            EQU        $00000800
  274. kPCIPhysicalHighDevice2            EQU        $00001000
  275. kPCIPhysicalHighDevice3            EQU        $00001800
  276. kPCIPhysicalHighDevice4            EQU        $00002000
  277. kPCIPhysicalHighDevice5            EQU        $00002800
  278. kPCIPhysicalHighDevice6            EQU        $00003000
  279. kPCIPhysicalHighDevice7            EQU        $00003800
  280. kPCIPhysicalHighDevice8            EQU        $00004000
  281. kPCIPhysicalHighDevice9            EQU        $00004800
  282. kPCIPhysicalHighDevice10        EQU        $00005000
  283. kPCIPhysicalHighDevice11        EQU        $00005800
  284. kPCIPhysicalHighDevice12        EQU        $00006000
  285. kPCIPhysicalHighDevice13        EQU        $00006800
  286. kPCIPhysicalHighDevice14        EQU        $00007000
  287. kPCIPhysicalHighDevice15        EQU        $00007800
  288. kPCIPhysicalHighDevice16        EQU        $00008000
  289. kPCIPhysicalHighDevice17        EQU        $00008800
  290. kPCIPhysicalHighDevice18        EQU        $00009000
  291. kPCIPhysicalHighDevice19        EQU        $00009800
  292. kPCIPhysicalHighDevice20        EQU        $0000A000
  293. kPCIPhysicalHighDevice21        EQU        $0000A800
  294. kPCIPhysicalHighDevice22        EQU        $0000B000
  295. kPCIPhysicalHighDevice23        EQU        $0000B800
  296. kPCIPhysicalHighDevice24        EQU        $0000C000
  297. kPCIPhysicalHighDevice25        EQU        $0000C800
  298. kPCIPhysicalHighDevice26        EQU        $0000D000
  299. kPCIPhysicalHighDevice27        EQU        $0000D800
  300. kPCIPhysicalHighDevice28        EQU        $0000E000
  301. kPCIPhysicalHighDevice29        EQU        $0000E800
  302. kPCIPhysicalHighDevice30        EQU        $0000F000
  303. kPCIPhysicalHighDevice31        EQU        $0000F800
  304. kPCIPhysicalHighFunctionMask    EQU        $00000700
  305. kPCIPhysicalHighFunction0        EQU        $00000000
  306. kPCIPhysicalHighFunction1        EQU        $00000100
  307. kPCIPhysicalHighFunction2        EQU        $00000200
  308. kPCIPhysicalHighFunction3        EQU        $00000300
  309. kPCIPhysicalHighFunction4        EQU        $00000400
  310. kPCIPhysicalHighFunction5        EQU        $00000500
  311. kPCIPhysicalHighFunction6        EQU        $00000600
  312. kPCIPhysicalHighFunction7        EQU        $00000700
  313. kPCIPhysicalHighRegisterMask    EQU        $000000FF
  314. kPCIPhysicalHighRegisterVendorID EQU    $00000000
  315. kPCIPhysicalHighRegisterDeviceID EQU    $00000002
  316. kPCIPhysicalHighRegisterCommand    EQU        $00000004
  317. kPCIPhysicalHighRegisterRevisionID EQU    $00000008
  318. kPCIPhysicalHighRegisterCacheLineSIze EQU $0000000C
  319. kPCIPhysicalHighRegisterHeaderType EQU    $0000000E
  320. kPCIPhysicalHighRegisterBaseAddress EQU    $00000010
  321. kPCIPhysicalHighRegisterBridgeBusInfo EQU $00000018
  322. kPCIPhysicalHighRegisterCardbusCIS EQU    $00000028
  323. kPCIPhysicalHighRegisterSubsystemVendorID EQU $0000002C
  324. kPCIPhysicalHighRegisterExpansionROMBase EQU $00000030
  325. kPCIPhysicalHighRegisterInterruptLine EQU $0000003C
  326. ;  pci cycle access type for forwarding
  327.  
  328. kPCIaccessType0                    EQU        0
  329. kPCIaccessType1                    EQU        1
  330.     ENDIF
  331.     ENDIF ; __PCIPLUGIN__ 
  332.  
  333.